import pandas as pd
import altair as alt
from datetime import datetime
from altair import datum
import geopandas as gpd
import requests
import json
def create_nominatim_request(region_or_city):
place_words = region_or_city.split(' ')
request = "https://nominatim.openstreetmap.org/search.php?q="
for word in place_words:
request += f"+{word}"
request += "+&format=jsonv2"
print(request)
return request
def get_osm_id(region_or_city):
request = create_nominatim_request(region_or_city)
response = requests.get(request)
print(response.json())
if region_or_city.lower() == 'коломийський район':
print("using old коломийський")
return 1741643
return response.json()[0]['osm_id']
def get_lat_lon(region_or_city):
request = create_nominatim_request(region_or_city)
response = requests.get(request)
return (float(response.json()[0]['lat']), float(response.json()[0]['lon']))
def get_polygon_df_by_osm_id(osm_id):
request = f"http://polygons.openstreetmap.fr/get_geojson.py?id={osm_id}¶ms=0"
print(request)
return gpd.read_file(f"http://polygons.openstreetmap.fr/get_geojson.py?id={str(osm_id)}¶ms=0")
def get_region_geodata(region_or_city):
osm_id = get_osm_id(region_or_city)
return get_polygon_df_by_osm_id(osm_id)
def get_region_geometry(region_or_city):
osm_id = get_osm_id(region_or_city)
request = f"http://polygons.openstreetmap.fr/get_geojson.py?id={osm_id}¶ms=0"
response = requests.get(request)
def visualize_place(region_or_city):
df = get_region_geodata(region_or_city)
lat, lon = get_lat_lon(region_or_city)
return alt.Chart(df).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = alt.value('gray'),
opacity = alt.value(0.6),
).project(
type='mercator', scale=12000, center=[lon, lat]
).properties(width = 550, height = 720)
place = "Івано-Франківська область"
lat, lon = get_lat_lon(place)
df = get_region_geodata(place)
alt.Chart(df).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = alt.value('gray'),
opacity = alt.value(0.6),
).project(
type='mercator', scale=12000, center=[lon, lat]
).properties(width = 550, height = 720)
https://nominatim.openstreetmap.org/search.php?q=+Івано-Франківська+область+&format=jsonv2
https://nominatim.openstreetmap.org/search.php?q=+Івано-Франківська+область+&format=jsonv2
[{'place_id': 281759063, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 72488, 'boundingbox': ['47.7243356', '49.5477701', '23.5470764', '25.6531196'], 'lat': '48.7481718', 'lon': '24.5207477', 'display_name': 'Івано-Франківська область, Україна', 'place_rank': 8, 'category': 'boundary', 'type': 'administrative', 'importance': 0.8982648336744858, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=72488¶ms=0
df = pd.read_excel("data/ngo_2021_07_01.xlsx", sheet_name='ІВАНО-ФРАНКІВСЬКА', skiprows=[0, 1, 2, 3])
df.columns = ['code', 'status', 'name', 'rada_name', 'raion_name', 'oblast_name', 'year', 'date', 'number', 'square', 'population', 'documentation_price', 'price', 'population_coeff', 'near_110k_city_coeff', 'resort_coeff', 'radiation_coeff', 'city_building_min_coeff', 'city_building_max_coeff']
df.head()
| code | status | name | rada_name | raion_name | oblast_name | year | date | number | square | population | documentation_price | price | population_coeff | near_110k_city_coeff | resort_coeff | radiation_coeff | city_building_min_coeff | city_building_max_coeff | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2620480401 | СЕЛО | БАБЧЕ | БАБЧЕНСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 10!05!2011 | № 8-5/11 | 895,3 | 2501 | 8.200 | 17.32 | 1.0 | 1.0 | 1.0 | 1.0 | 0.80 | 1.18 |
| 1 | 2620455100 | СЕЛИЩЕ МІСЬКОГО ТИПУ | БОГОРОДЧАНИ | БОГОРОДЧАНСЬКА СЕЛИЩНА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 18!10!2011 | № 401 | 687,6 | 7686 | 30.000 | 45.63 | 1.0 | 1.1 | 1.0 | 1.0 | 0.79 | 1.28 |
| 2 | 2620480601 | СЕЛО | БОГРІВКА | БОГРІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2012.0 | 29!12!2012 | №1-22/2012 | 396,3 | 869 | 5.352 | 22.92 | 1.0 | NaN | NaN | NaN | 0.86 | 1.22 |
| 3 | 2620480901 | СЕЛО | ГЛИБІВКА | ГЛИБІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 15!09!2011 | № 77-8/2011 | 427,27 | 1047 | 4.600 | 24.20 | 1.0 | 1.1 | 1.0 | 1.0 | 0.75 | 1.14 |
| 4 | 2620480801 | СЕЛО | ГЛИБОКА | ГЛИБОКІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2013.0 | 10!07!2013 | №383-19/2013 | 480,3 | 1452 | 7.636 | 21.84 | NaN | NaN | NaN | NaN | 0.81 | 1.15 |
df['raion_name'].unique()
array(['БОГОРОДЧАНСЬКИЙ РАЙОН', 'ВЕРХОВИНСЬКИЙ РАЙОН', 'ГАЛИЦЬКИЙ РАЙОН',
'ГОРОДЕНКІВСЬКИЙ РАЙОН', 'ДОЛИНСЬКИЙ РАЙОН', 'КАЛУСЬКИЙ РАЙОН',
'КОЛОМИЙСЬКИЙ РАЙОН', 'КОСІВСЬКИЙ РАЙОН', 'НАДВІРНЯНСЬКИЙ РАЙОН',
'РОГАТИНСЬКИЙ РАЙОН', 'РОЖНЯТІВСЬКИЙ РАЙОН', 'СНЯТИНСЬКИЙ РАЙОН',
'ТИСМЕНИЦЬКИЙ РАЙОН', 'ТЛУМАЦЬКИЙ РАЙОН', 'БОЛЕХІВ',
'ІВАНО-ФРАНКІВСЬК', 'КАЛУШ', 'КОЛОМИЯ', 'ЯРЕМЧЕ', nan],
dtype=object)
geometries = {}
for name in df['raion_name'].unique():
# print(name.lower())
try:
df_local = get_region_geodata(name.lower())
geometries[name.lower()] = df_local['geometry'][0][0] #.boundary
except:
print("\n\n\n =========", name, "\n\n")
continue
https://nominatim.openstreetmap.org/search.php?q=+богородчанський+район+&format=jsonv2
[{'place_id': 282507457, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741637, 'boundingbox': ['48.5196602', '48.9168897', '24.0955871', '24.6630058'], 'lat': '48.718301350000004', 'lon': '24.389731915703962', 'display_name': 'Богородчанський район, Івано-Франківський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5165175794938812}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741637¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+верховинський+район+&format=jsonv2
[{'place_id': 282197195, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741638, 'boundingbox': ['47.7243356', '48.2776251', '24.5543966', '25.0837361'], 'lat': '48.0008742', 'lon': '24.74291798292963', 'display_name': 'Верховинський район, Івано-Франківська область, Україна', 'place_rank': 12, 'category': 'boundary', 'type': 'administrative', 'importance': 0.522709819346418, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741638¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+галицький+район+&format=jsonv2
[{'place_id': 282235941, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741639, 'boundingbox': ['49.0002512', '49.31356', '24.5017353', '24.9920145'], 'lat': '49.15713185', 'lon': '24.693506128440642', 'display_name': 'Галицький район, Івано-Франківський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5338711581293419}, {'place_id': 282614757, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2123677, 'boundingbox': ['49.8158439', '49.8523391', '24.0038684', '24.0556786'], 'lat': '49.83402975', 'lon': '24.02432430786181', 'display_name': 'Галицький район, Львів, Львівська міська громада, Львівський район, Львівська область, Україна', 'place_rank': 20, 'category': 'boundary', 'type': 'administrative', 'importance': 0.45375720907878514, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741639¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+городенківський+район+&format=jsonv2
[{'place_id': 282192457, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741640, 'boundingbox': ['48.5519211', '48.8721054', '25.2095178', '25.6531196'], 'lat': '48.7121441', 'lon': '25.42710508197422', 'display_name': 'Городенківський район, Коломийський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.526719844716193}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741640¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+долинський+район+&format=jsonv2
[{'place_id': 282190232, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741641, 'boundingbox': ['48.5725914', '49.1488627', '23.5470764', '24.2309579'], 'lat': '48.86060955', 'lon': '23.760798711983327', 'display_name': 'Долинський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5283363286160455}, {'place_id': 282527533, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1738456, 'boundingbox': ['47.9747103', '48.3495922', '32.4782431', '33.2367327'], 'lat': '48.1621221', 'lon': '32.85398900524438', 'display_name': 'Долинський район, Кіровоградська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5018815254903564}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741641¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+калуський+район+&format=jsonv2
[{'place_id': 282342940, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741642, 'boundingbox': ['48.8495212', '49.2327863', '24.1277687', '24.5770678'], 'lat': '49.041227750000004', 'lon': '24.503153569814913', 'display_name': 'Калуський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5242443151913654}, {'place_id': 283299420, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 11797162, 'boundingbox': ['48.4578644', '49.2327863', '23.5470764', '24.5770678'], 'lat': '48.845375700000005', 'lon': '23.964672522118207', 'display_name': 'Калуський район, Івано-Франківська область, Україна', 'place_rank': 12, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5242443151913654, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741642¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+коломийський+район+&format=jsonv2
[{'place_id': 283538882, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 11806207, 'boundingbox': ['48.3590775', '48.8721054', '24.7110657', '25.6531196'], 'lat': '48.613369750000004', 'lon': '25.18614132691799', 'display_name': 'Коломийський район, Івано-Франківська область, Україна', 'place_rank': 12, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5447378532252786, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 282192235, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741643, 'boundingbox': ['48.4062613', '48.7929503', '24.7110657', '25.3393444'], 'lat': '48.59963635', 'lon': '25.08673562437037', 'display_name': 'Коломийський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5447378532252786}]
using old коломийський
http://polygons.openstreetmap.fr/get_geojson.py?id=1741643¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+косівський+район+&format=jsonv2
[{'place_id': 283530225, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 11806248, 'boundingbox': ['48.1597173', '48.4577394', '24.7064468', '25.3077123'], 'lat': '48.30882615', 'lon': '24.986462824842988', 'display_name': 'Косівський район, Івано-Франківська область, Україна', 'place_rank': 12, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5312786302704339, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 282198536, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741644, 'boundingbox': ['48.1597173', '48.4577394', '24.7064468', '25.3077123'], 'lat': '48.30882615', 'lon': '24.986462824842988', 'display_name': 'Косівський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5312786302704339}]
http://polygons.openstreetmap.fr/get_geojson.py?id=11806248¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+надвірнянський+район+&format=jsonv2
[{'place_id': 283292309, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 11806259, 'boundingbox': ['48.117885', '48.7564901', '24.1146162', '24.8238689'], 'lat': '48.4371696', 'lon': '24.438537308737367', 'display_name': 'Надвірнянський район, Івано-Франківська область, Україна', 'place_rank': 12, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5367726626278903, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 282269372, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741645, 'boundingbox': ['48.3496528', '48.8108471', '24.1146162', '24.8784891'], 'lat': '48.57986165', 'lon': '24.54786239198284', 'display_name': 'Надвірнянський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5367726626278903}]
http://polygons.openstreetmap.fr/get_geojson.py?id=11806259¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+рогатинський+район+&format=jsonv2
[{'place_id': 282189226, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741646, 'boundingbox': ['49.2231541', '49.5477701', '24.2987871', '24.8592875'], 'lat': '49.3854369', 'lon': '24.598226527209093', 'display_name': 'Рогатинський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5245592489342289}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741646¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+рожнятівський+район+&format=jsonv2
[{'place_id': 282285664, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741647, 'boundingbox': ['48.4578644', '49.0352147', '23.8323102', '24.3804611'], 'lat': '48.746766449999996', 'lon': '24.05016446709063', 'display_name': 'Рожнятівський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5140344218700501}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741647¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+снятинський+район+&format=jsonv2
[{'place_id': 282456648, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741648, 'boundingbox': ['48.3590775', '48.5983393', '25.1738566', '25.6204176'], 'lat': '48.478744649999996', 'lon': '25.40840945810455', 'display_name': 'Снятинський район, Коломийський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5135856402800572}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741648¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+тисменицький+район+&format=jsonv2
[{'place_id': 282528277, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741649, 'boundingbox': ['48.7583277', '49.1050893', '24.4488502', '24.9723058'], 'lat': '48.9316755', 'lon': '24.575253401924282', 'display_name': 'Тисменицький район, Івано-Франківський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.5147015259107613}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741649¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+тлумацький+район+&format=jsonv2
[{'place_id': 282200685, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 1741650, 'boundingbox': ['48.6422942', '49.0113635', '24.9041327', '25.325781'], 'lat': '48.82683455', 'lon': '25.096657730785395', 'display_name': 'Тлумацький район, Коломийський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.510111385609355}]
http://polygons.openstreetmap.fr/get_geojson.py?id=1741650¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+болехів+&format=jsonv2
[{'place_id': 282941876, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 8097681, 'boundingbox': ['49.0372138', '49.1135468', '23.8061687', '23.9071915'], 'lat': '49.0663203', 'lon': '23.8598949', 'display_name': 'Болехів, Болехівська міська громада, Калуський район, Івано-Франківська область, Україна', 'place_rank': 18, 'category': 'boundary', 'type': 'administrative', 'importance': 0.44998725744805634, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 282637541, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2722384, 'boundingbox': ['48.8811145', '49.137934', '23.5614709', '24.0264586'], 'lat': '49.00948555', 'lon': '23.674412485996005', 'display_name': 'Болехівська міська рада, Калуський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.2924415519306157}, {'place_id': 1265859, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 314923062, 'boundingbox': ['49.0582275', '49.0682275', '23.8671513', '23.8771513'], 'lat': '49.0632275', 'lon': '23.8721513', 'display_name': 'Болехів, Молодіжна вулиця, Флісера, Болехів Руський, Болехів, Болехівська міська громада, Калуський район, Івано-Франківська область, 77200-77204, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'station', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_train_station2.p.20.png'}, {'place_id': 53824403, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 4640825285, 'boundingbox': ['49.0655786', '49.0656786', '23.8589892', '23.8590892'], 'lat': '49.0656286', 'lon': '23.8590392', 'display_name': 'Болехів, Івана Франка площа, Флісера, Волоське Село, Болехів, Болехівська міська громада, Калуський район, Івано-Франківська область, 77200-77204, Україна', 'place_rank': 30, 'category': 'highway', 'type': 'bus_stop', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_bus_stop2.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=8097681¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+івано-франківськ+&format=jsonv2
[{'place_id': 282386169, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2362670, 'boundingbox': ['48.8611451', '48.956705', '24.6417506', '24.7589659'], 'lat': '48.9225224', 'lon': '24.7103188', 'display_name': 'Івано-Франківськ, Івано-Франківська міська громада, Івано-Франківський район, Івано-Франківська область, Україна', 'place_rank': 18, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5662843259072263, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 1254208, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 314919246, 'boundingbox': ['48.9204253', '48.9304253', '24.7188535', '24.7288535'], 'lat': '48.9254253', 'lon': '24.7238535', 'display_name': 'Івано-Франківськ, Привокзальна площа, Гірка, Івано-Франківськ, Івано-Франківська міська громада, Івано-Франківський район, Івано-Франківська область, 76000, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'station', 'importance': 0.3788130194834344, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_train_station2.p.20.png'}, {'place_id': 282275391, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2362664, 'boundingbox': ['48.504733', '48.9773984', '24.5074449', '24.8098674'], 'lat': '48.9192061', 'lon': '24.733482466990942', 'display_name': 'Івано-Франківська міська рада, Івано-Франківський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.2975805605530676}]
http://polygons.openstreetmap.fr/get_geojson.py?id=2362670¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+калуш+&format=jsonv2
[{'place_id': 282285699, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2190422, 'boundingbox': ['48.9978353', '49.0910879', '24.2734422', '24.4485605'], 'lat': '49.028894', 'lon': '24.3613198', 'display_name': 'Калуш, Калуська міська громада, Калуський район, Івано-Франківська область, Україна', 'place_rank': 18, 'category': 'boundary', 'type': 'administrative', 'importance': 0.46907511874282654, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 42086533, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 3288155974, 'boundingbox': ['38.8618365', '38.9018365', '44.6957508', '44.7357508'], 'lat': '38.8818365', 'lon': '44.7157508', 'display_name': 'کالوس, دهستان سکمن آباد, بخش صفائیه, شهرستان خوی, استان آذربایجان غربی, ایران', 'place_rank': 19, 'category': 'place', 'type': 'village', 'importance': 0.379989495490236, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_place_village.p.20.png'}, {'place_id': 282595066, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 5488892, 'boundingbox': ['48.6164817', '49.0631879', '27.2240739', '27.3464302'], 'lat': '48.842986', 'lon': '27.2780871', 'display_name': 'Калюс, Кам’янець-Подільський район, Хмельницька область, 32616, Україна', 'place_rank': 18, 'category': 'waterway', 'type': 'river', 'importance': 0.2960833436228193}, {'place_id': 71209164, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 6555690707, 'boundingbox': ['18.7418538', '18.7818538', '73.8990362', '73.9390362'], 'lat': '18.7618538', 'lon': '73.9190362', 'display_name': 'Kalus, Khed, Pune District, Maharashtra, 411035, India', 'place_rank': 19, 'category': 'place', 'type': 'village', 'importance': 0.275, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_place_village.p.20.png'}, {'place_id': 282711714, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 6042947, 'boundingbox': ['48.9978353', '49.0910879', '24.2734422', '24.4485605'], 'lat': '49.0442896', 'lon': '24.364666847329914', 'display_name': 'Калуська міська рада, Калуш, Калуська міська громада, Калуський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.24352463088163046}, {'place_id': 1262814, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 314921403, 'boundingbox': ['49.0076164', '49.0176164', '24.3439717', '24.3539717'], 'lat': '49.0126164', 'lon': '24.3489717', 'display_name': 'Калуш, Привокзальна вулиця, Вокзальний, Калуш, Калуська міська громада, Калуський район, Івано-Франківська область, 77300-77309, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'station', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_train_station2.p.20.png'}, {'place_id': 80240790, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 7652429043, 'boundingbox': ['67.6391044', '67.6392044', '53.0104701', '53.0105701'], 'lat': '67.6391544', 'lon': '53.0105201', 'display_name': 'Калюш, улица Победы, Нарьян-Мар, городской округ Нарьян-Мар, Ненецкий автономный округ, Северо-Западный федеральный округ, 166000, Россия', 'place_rank': 30, 'category': 'shop', 'type': 'supermarket', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//shopping_supermarket.p.20.png'}, {'place_id': 73554169, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 6859656969, 'boundingbox': ['37.4457111', '37.4458111', '25.3268283', '25.3269283'], 'lat': '37.4457611', 'lon': '25.3268783', 'display_name': 'Kalus, Μητροπόλεως, Αλευκάντρα, Μύκονος, Δήμος Μυκόνου, Περιφερειακή Ενότητα Μυκόνου, Περιφέρεια Νοτίου Αιγαίου, Αποκεντρωμένη Διοίκηση Αιγαίου, 84600, Ελλάς', 'place_rank': 30, 'category': 'shop', 'type': 'clothes', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//shopping_clothes.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=2190422¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+коломия+&format=jsonv2
[{'place_id': 282397120, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 2697552, 'boundingbox': ['48.5028759', '48.5895777', '24.9752793', '25.0943408'], 'lat': '48.5259211', 'lon': '25.0380538', 'display_name': 'Коломия, Коломийська міська громада, Коломийський район, Івано-Франківська область, Україна', 'place_rank': 18, 'category': 'boundary', 'type': 'administrative', 'importance': 0.5051490766575196, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 40596656, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 3166094761, 'boundingbox': ['48.5297531', '48.5397531', '25.0548272', '25.0648272'], 'lat': '48.5347531', 'lon': '25.0598272', 'display_name': 'Коломия, Крип’якевича вулиця, Коломия, Коломийська міська громада, Коломийський район, Івано-Франківська область, 78204, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'station', 'importance': 0.34342522267617864, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_train_station2.p.20.png'}, {'place_id': 47338283, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 3925459438, 'boundingbox': ['52.3278422', '52.3678422', '19.1932115', '19.2332115'], 'lat': '52.3478422', 'lon': '19.2132115', 'display_name': 'Kołomia, gmina Lubień Kujawski, powiat włocławski, województwo kujawsko-pomorskie, 99-350, Polska', 'place_rank': 19, 'category': 'place', 'type': 'village', 'importance': 0.32140900331480593, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_place_village.p.20.png'}, {'place_id': 25302676, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 2689139309, 'boundingbox': ['52.3207336', '52.3607336', '19.176706', '19.216706'], 'lat': '52.3407336', 'lon': '19.196706', 'display_name': 'Kołomia, gmina Nowe Ostrowy, powiat kutnowski, województwo łódzkie, 99-350, Polska', 'place_rank': 19, 'category': 'place', 'type': 'village', 'importance': 0.2897018831470392, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_place_village.p.20.png'}, {'place_id': 116590350, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': 55976155, 'boundingbox': ['48.5246634', '48.5249594', '25.0392988', '25.0397505'], 'lat': '48.524811400000004', 'lon': '25.03952463578337', 'display_name': 'Коломия, 9/6, Тараса Шевченка площа, Коломия, Коломийська міська громада, Коломийський район, Івано-Франківська область, 78200, Україна', 'place_rank': 30, 'category': 'shop', 'type': 'department_store', 'importance': 0.001}, {'place_id': 142022004, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': 170975870, 'boundingbox': ['48.5172934', '48.5399275', '25.1070862', '25.1471461'], 'lat': '48.529023', 'lon': '25.122920856555744', 'display_name': 'Коломия, Н-10, Корнич, Коломийська міська громада, Коломийський район, Івано-Франківська область, 78215, Україна', 'place_rank': 30, 'category': 'aeroway', 'type': 'aerodrome', 'importance': 0.001, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_airport2.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=2697552¶ms=0
https://nominatim.openstreetmap.org/search.php?q=+яремче+&format=jsonv2
[{'place_id': 283496434, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 10736839, 'boundingbox': ['48.3907243', '48.5111717', '24.443749', '24.6432322'], 'lat': '48.4504129', 'lon': '24.550955', 'display_name': 'Яремче, Яремчанська міська громада, Надвірнянський район, Івано-Франківська область, Україна', 'place_rank': 18, 'category': 'boundary', 'type': 'administrative', 'importance': 0.4116797246700819, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}, {'place_id': 283192039, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 10736838, 'boundingbox': ['48.117885', '48.5111717', '24.3496419', '24.756354'], 'lat': '48.31456205', 'lon': '24.588793256341383', 'display_name': 'Яремчанська міська рада, Надвірнянський район, Івано-Франківська область, Україна', 'place_rank': 25, 'category': 'boundary', 'type': 'historic', 'importance': 0.3067280415833832}, {'place_id': 7386071, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 901773766, 'boundingbox': ['48.4438545', '48.4538545', '24.5475763', '24.5575763'], 'lat': '48.4488545', 'lon': '24.5525763', 'display_name': 'Яремче, Степана Бандери вулиця, Яремче, Яремчанська міська громада, Надвірнянський район, Івано-Франківська область, 78500, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'station', 'importance': 0.2844409508461066, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//transport_train_station2.p.20.png'}, {'place_id': 73384958, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'node', 'osm_id': 6863684607, 'boundingbox': ['48.4488559', '48.4489559', '24.5523451', '24.5524451'], 'lat': '48.4489059', 'lon': '24.5523951', 'display_name': 'Яремче, Степана Бандери вулиця, Яремче, Яремчанська міська громада, Надвірнянський район, Івано-Франківська область, 78500, Україна', 'place_rank': 30, 'category': 'railway', 'type': 'stop', 'importance': 0.001}]
http://polygons.openstreetmap.fr/get_geojson.py?id=10736839¶ms=0
========= nan
list(geometries.values())
[<shapely.geometry.multipolygon.MultiPolygon at 0x21e1a11a520>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea7a340>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea899d0>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea7a400>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea89940>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1d3d2e20>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea7a220>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2b50>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea89fd0>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2610>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2f10>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2760>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2070>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1d3d25b0>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1ea89a90>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1e815a00>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1edf2af0>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1d3d2310>, <shapely.geometry.multipolygon.MultiPolygon at 0x21e1e5422b0>]
df_all = get_region_geodata('Івано-Франківська область')
geometries['Івано-Франківська область'] = df_all['geometry'][0][0]
https://nominatim.openstreetmap.org/search.php?q=+Івано-Франківська+область+&format=jsonv2
[{'place_id': 281759063, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 72488, 'boundingbox': ['47.7243356', '49.5477701', '23.5470764', '25.6531196'], 'lat': '48.7481718', 'lon': '24.5207477', 'display_name': 'Івано-Франківська область, Україна', 'place_rank': 8, 'category': 'boundary', 'type': 'administrative', 'importance': 0.8982648336744858, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=72488¶ms=0
geometries2 = {"name": list(geometries.keys()), "geometry": list(geometries.values())}
map_if = pd.DataFrame.from_dict(geometries2)
map_if.head()
| name | geometry | |
|---|---|---|
| 0 | богородчанський район | (POLYGON ((24.1241848 48.534142, 24.1246811 48... |
| 1 | верховинський район | (POLYGON ((24.5543966 48.1179534, 24.5555185 4... |
| 2 | галицький район | (POLYGON ((24.5025238 49.2231541, 24.5017353 4... |
| 3 | городенківський район | (POLYGON ((25.2097308 48.7107219, 25.2095177 4... |
| 4 | долинський район | (POLYGON ((23.5470764 48.7253908, 23.5477937 4... |
gdf = gpd.GeoDataFrame(map_if, geometry=map_if['geometry'])
gdf = gdf.head(len(gdf)-1)
gdf
| name | geometry | |
|---|---|---|
| 0 | богородчанський район | MULTIPOLYGON (((24.12418 48.53414, 24.12468 48... |
| 1 | верховинський район | MULTIPOLYGON (((24.55440 48.11795, 24.55552 48... |
| 2 | галицький район | MULTIPOLYGON (((24.50252 49.22315, 24.50174 49... |
| 3 | городенківський район | MULTIPOLYGON (((25.20973 48.71072, 25.20952 48... |
| 4 | долинський район | MULTIPOLYGON (((23.54708 48.72539, 23.54779 48... |
| 5 | калуський район | MULTIPOLYGON (((24.12777 49.08564, 24.12832 49... |
| 6 | коломийський район | MULTIPOLYGON (((24.71107 48.73653, 24.71258 48... |
| 7 | косівський район | MULTIPOLYGON (((24.70710 48.27322, 24.70733 48... |
| 8 | надвірнянський район | MULTIPOLYGON (((24.13143 48.52888, 24.13250 48... |
| 9 | рогатинський район | MULTIPOLYGON (((24.29880 49.29566, 24.29879 49... |
| 10 | рожнятівський район | MULTIPOLYGON (((23.83509 48.57259, 23.83523 48... |
| 11 | снятинський район | MULTIPOLYGON (((25.17390 48.41398, 25.17425 48... |
| 12 | тисменицький район | MULTIPOLYGON (((24.44891 48.91689, 24.44885 48... |
| 13 | тлумацький район | MULTIPOLYGON (((24.91174 48.77074, 24.91259 48... |
| 14 | болехів | MULTIPOLYGON (((23.81616 49.05065, 23.81641 49... |
| 15 | івано-франківськ | MULTIPOLYGON (((24.64175 48.95199, 24.64188 48... |
| 16 | калуш | MULTIPOLYGON (((24.27413 49.05547, 24.27344 49... |
| 17 | коломия | MULTIPOLYGON (((24.98610 48.54748, 24.98635 48... |
| 18 | яремче | MULTIPOLYGON (((24.44375 48.50056, 24.44392 48... |
gdf.geometry[15] = gdf.geometry[12][1]
gdf_regions = gdf[gdf['name'].str.endswith('район')].copy()
gdf_regions.geometry = gdf_regions.geometry.apply(lambda p: p[0].boundary)
gdf_cities = gdf[~gdf['name'].str.endswith('район')].copy()
gdf_cities.geometry = gdf_cities.geometry.apply(lambda p: p.boundary)
gdf.geometry = gdf.geometry.apply(lambda p: p.boundary)
alt.Chart(gdf.head(19)).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = 'name:N' #alt.value('gray'),
# opacity = alt.value(0.6),
).project(
type='mercator', scale=12000, center=[lon, lat]
).properties(width = 550, height = 720, background = '#F9F9F9')
regions = alt.Chart(gdf_regions).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = 'name:N' #alt.value('gray'),
# opacity = alt.value(0.6),
).project(
type='mercator', scale=12000, center=[lon, lat]
) #.properties(width = 550, height = 720, background = '#F9F9F9')
cities = alt.Chart(gdf_cities.head(5)).mark_geoshape(stroke = 'black', strokeWidth = 3).encode(
color = 'name:N' #alt.value('gray'),
# opacity = alt.value(0.6),
).project(
type='mercator', scale=12000, center=[lon, lat]
) #.properties(width = 550, height = 720, background = '#F9F9F9')
(regions + cities).properties(width = 550, height = 720, background = '#F9F9F9')
df.head()
| code | status | name | rada_name | raion_name | oblast_name | year | date | number | square | population | documentation_price | price | population_coeff | near_110k_city_coeff | resort_coeff | radiation_coeff | city_building_min_coeff | city_building_max_coeff | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2620480401 | СЕЛО | БАБЧЕ | БАБЧЕНСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 10!05!2011 | № 8-5/11 | 895,3 | 2501 | 8.200 | 17.32 | 1.0 | 1.0 | 1.0 | 1.0 | 0.80 | 1.18 |
| 1 | 2620455100 | СЕЛИЩЕ МІСЬКОГО ТИПУ | БОГОРОДЧАНИ | БОГОРОДЧАНСЬКА СЕЛИЩНА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 18!10!2011 | № 401 | 687,6 | 7686 | 30.000 | 45.63 | 1.0 | 1.1 | 1.0 | 1.0 | 0.79 | 1.28 |
| 2 | 2620480601 | СЕЛО | БОГРІВКА | БОГРІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2012.0 | 29!12!2012 | №1-22/2012 | 396,3 | 869 | 5.352 | 22.92 | 1.0 | NaN | NaN | NaN | 0.86 | 1.22 |
| 3 | 2620480901 | СЕЛО | ГЛИБІВКА | ГЛИБІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 15!09!2011 | № 77-8/2011 | 427,27 | 1047 | 4.600 | 24.20 | 1.0 | 1.1 | 1.0 | 1.0 | 0.75 | 1.14 |
| 4 | 2620480801 | СЕЛО | ГЛИБОКА | ГЛИБОКІВСЬКА СІЛЬСЬКА РАДА | БОГОРОДЧАНСЬКИЙ РАЙОН | ІВАНО-ФРАНКІВСЬКА | 2013.0 | 10!07!2013 | №383-19/2013 | 480,3 | 1452 | 7.636 | 21.84 | NaN | NaN | NaN | NaN | 0.81 | 1.15 |
df_test = df.copy()
df_test['raion_name'] = df_test['raion_name'] .str.lower()
df_test['price'].hist()
<AxesSubplot:>
def price_categorization(row):
if row['price'] < 20:
val = 'tiny'
elif row['price'] < 25:
val = 'small'
elif row['price'] < 75:
val = 'standard'
elif row['price'] <= 100:
val = 'medium'
else:
val = 'high'
return val
df_test['price_category'] = df_test.apply(price_categorization, axis=1)
df_test.head()
| code | status | name | rada_name | raion_name | oblast_name | year | date | number | square | population | documentation_price | price | population_coeff | near_110k_city_coeff | resort_coeff | radiation_coeff | city_building_min_coeff | city_building_max_coeff | price_category | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2620480401 | СЕЛО | БАБЧЕ | БАБЧЕНСЬКА СІЛЬСЬКА РАДА | богородчанський район | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 10!05!2011 | № 8-5/11 | 895,3 | 2501 | 8.200 | 17.32 | 1.0 | 1.0 | 1.0 | 1.0 | 0.80 | 1.18 | tiny |
| 1 | 2620455100 | СЕЛИЩЕ МІСЬКОГО ТИПУ | БОГОРОДЧАНИ | БОГОРОДЧАНСЬКА СЕЛИЩНА РАДА | богородчанський район | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 18!10!2011 | № 401 | 687,6 | 7686 | 30.000 | 45.63 | 1.0 | 1.1 | 1.0 | 1.0 | 0.79 | 1.28 | standard |
| 2 | 2620480601 | СЕЛО | БОГРІВКА | БОГРІВСЬКА СІЛЬСЬКА РАДА | богородчанський район | ІВАНО-ФРАНКІВСЬКА | 2012.0 | 29!12!2012 | №1-22/2012 | 396,3 | 869 | 5.352 | 22.92 | 1.0 | NaN | NaN | NaN | 0.86 | 1.22 | small |
| 3 | 2620480901 | СЕЛО | ГЛИБІВКА | ГЛИБІВСЬКА СІЛЬСЬКА РАДА | богородчанський район | ІВАНО-ФРАНКІВСЬКА | 2011.0 | 15!09!2011 | № 77-8/2011 | 427,27 | 1047 | 4.600 | 24.20 | 1.0 | 1.1 | 1.0 | 1.0 | 0.75 | 1.14 | small |
| 4 | 2620480801 | СЕЛО | ГЛИБОКА | ГЛИБОКІВСЬКА СІЛЬСЬКА РАДА | богородчанський район | ІВАНО-ФРАНКІВСЬКА | 2013.0 | 10!07!2013 | №383-19/2013 | 480,3 | 1452 | 7.636 | 21.84 | NaN | NaN | NaN | NaN | 0.81 | 1.15 | small |
df_test['raion_name'].unique()
array(['богородчанський район', 'верховинський район', 'галицький район',
'городенківський район', 'долинський район', 'калуський район',
'коломийський район', 'косівський район', 'надвірнянський район',
'рогатинський район', 'рожнятівський район', 'снятинський район',
'тисменицький район', 'тлумацький район', 'болехів',
'івано-франківськ', 'калуш', 'коломия', 'яремче', nan],
dtype=object)
gdf_regions
| name | geometry | |
|---|---|---|
| 0 | богородчанський район | LINESTRING (24.12418 48.53414, 24.12468 48.535... |
| 1 | верховинський район | LINESTRING (24.55440 48.11795, 24.55552 48.116... |
| 2 | галицький район | LINESTRING (24.50252 49.22315, 24.50174 49.222... |
| 3 | городенківський район | LINESTRING (25.20973 48.71072, 25.20952 48.710... |
| 4 | долинський район | LINESTRING (23.54708 48.72539, 23.54779 48.725... |
| 5 | калуський район | LINESTRING (24.12777 49.08564, 24.12832 49.085... |
| 6 | коломийський район | LINESTRING (24.71107 48.73653, 24.71258 48.735... |
| 7 | косівський район | LINESTRING (24.70710 48.27322, 24.70733 48.273... |
| 8 | надвірнянський район | LINESTRING (24.13143 48.52888, 24.13250 48.529... |
| 9 | рогатинський район | LINESTRING (24.29880 49.29566, 24.29879 49.295... |
| 10 | рожнятівський район | LINESTRING (23.83509 48.57259, 23.83523 48.572... |
| 11 | снятинський район | LINESTRING (25.17390 48.41398, 25.17425 48.413... |
| 12 | тисменицький район | LINESTRING (24.44891 48.91689, 24.44885 48.916... |
| 13 | тлумацький район | LINESTRING (24.91174 48.77074, 24.91259 48.769... |
gdf_regions.columns = ['raion_name', 'geometry']
pd.DataFrame(df_test.groupby(['raion_name'])['price'].mean()).reset_index(level=['raion_name'])
| raion_name | price | |
|---|---|---|
| 0 | богородчанський район | 32.285854 |
| 1 | болехів | 24.218333 |
| 2 | верховинський район | 21.751163 |
| 3 | галицький район | 31.170845 |
| 4 | городенківський район | 22.762800 |
| 5 | долинський район | 32.030000 |
| 6 | калуський район | 33.824444 |
| 7 | калуш | 409.250000 |
| 8 | коломийський район | 32.622892 |
| 9 | коломия | 74.680000 |
| 10 | косівський район | 19.299333 |
| 11 | надвірнянський район | 29.248723 |
| 12 | рогатинський район | 28.890382 |
| 13 | рожнятівський район | 27.991176 |
| 14 | снятинський район | 27.390816 |
| 15 | тисменицький район | 45.851569 |
| 16 | тлумацький район | 16.287288 |
| 17 | яремче | 93.395714 |
| 18 | івано-франківськ | 125.705000 |
gdf_regions["centroid_x"] = gdf_regions.geometry.apply(lambda p: p.centroid.x)
gdf_regions["centroid_y"] = gdf_regions.geometry.apply(lambda p: p.centroid.y)
labels = alt.Chart(gdf_regions).transform_lookup(
lookup = 'raion_name',
from_ = alt.LookupData(data = pd.DataFrame(df_test.groupby(['raion_name'])['price'].mean()).reset_index(level=['raion_name']),
key = 'raion_name',
fields=['price', 'raion_name'])
).mark_text(color='black', lineBreak=r'nnn').encode(
longitude='centroid_x:Q',
latitude='centroid_y:Q',
text='label:N',
size=alt.value(10),
# opacity=alt.value(0.)
color = alt.condition(
alt.datum.price > 30,
alt.value('white'),
alt.value('black')
)
).transform_calculate(
label = "substring(datum.raion_name,0,indexof(datum.raion_name, ' ')) + 'nnn' + substring(datum.price, 0, 4)"
)
source_img = pd.DataFrame.from_records([
{"img": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Coat_of_Arms_of_Ivano-Frankivsk_Oblast.svg/1200px-Coat_of_Arms_of_Ivano-Frankivsk_Oblast.svg.png"}
])
emblem = alt.Chart(source_img).mark_image(
width=120,
height=120
).encode(
url='img'
)
regions = alt.Chart(gdf_regions).transform_lookup(
lookup = 'raion_name',
from_ = alt.LookupData(data = pd.DataFrame(df_test.groupby(['raion_name'])['price'].mean()).reset_index(level=['raion_name']),
key = 'raion_name',
fields=['price', 'raion_name'])
).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = alt.Color('price:Q', legend=alt.Legend(orient='left', title='Середня Ціна')),
tooltip = [
alt.Tooltip('raion_name:N')
],
)
(regions + labels + emblem).configure_view(
strokeWidth=0).configure_title(
fontSize=26,
font='Courier',
anchor='middle',
color='gray'
).configure_legend(
orient='bottom',
direction='vertical',
labelLimit=1500,
titleFontSize=16,
titleFont='Courier',
labelFontSize=20,
titleColor='grey',
labelColor='grey',
symbolSize=100
).properties(width = 550, height = 720, background = '#F9F9F9', padding = 25, title="Розподіл Середньої Ціни Землі за Районами")
alt.Chart(df_test).mark_bar().encode(
y='raion_name:N',
x='mean_price:Q'
).transform_aggregate(
mean_price='mean(price)',
groupby=["raion_name"]
)
alt.Chart(df_test).mark_text(size=25, baseline='middle').encode(
alt.X('x:O', axis=None),
alt.Y('price_category:O'), # axis = 0
alt.Row('raion_name:N', header=alt.Header(title='')),
alt.Text('emoji:N')
).transform_calculate(
emoji="{'tiny': '💵', 'small': '💸', 'standard': '💲', 'medium': '💰', 'high': '🤑'}[datum.price_category]"
).transform_window(
x='rank()',
groupby=['raion_name', 'price_category']
).properties(width=1200, height=160)
alt.Chart(df_test[df_test['raion_name'] == 'яремче']).mark_text(size=25, baseline='middle').encode(
alt.X('x:O', axis=None),
alt.Y('price_category:O', axis=None),
alt.Row('raion_name:N', header=alt.Header(title='')),
alt.Text('emoji:N')
).transform_calculate(
emoji="{'tiny': '💵', 'small': '💸', 'standard': '💲', 'medium': '💰', 'high': '🤑'}[datum.price_category]"
).transform_window(
x='rank()',
groupby=['raion_name', 'price_category']
).properties(width=300, height=160)
df_test['status'].value_counts()
СЕЛО 746 СЕЛИЩЕ МІСЬКОГО ТИПУ 23 СЕЛИЩЕ 20 МІСТО 15 Name: status, dtype: int64
city_names = df_test[df_test['status'].isin(['СЕЛИЩЕ МІСЬКОГО ТИПУ', 'СЕЛИЩЕ', 'МІСТО'])][['name', 'price']]
city_names['lat'] = city_names.name.apply(lambda p: get_lat_lon(p + " івано-франківська область")[0])
city_names['lon'] = city_names.name.apply(lambda p: get_lat_lon(p + " івано-франківська область")[1])
https://nominatim.openstreetmap.org/search.php?q=+БОГОРОДЧАНИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БОЙКИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СОЛОТВИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВЕРХОВИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТОВПНІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БУРШТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГАЛИЧ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГОРОДЕНКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯКУБІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЧЕРНЕЛИЦЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ДОЛИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВОЙНИЛІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГВІЗДЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛИПНИКИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ОТИНІЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПЕЧЕНІЖИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТУДЛІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КОСІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КУТИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯБЛУНІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЗГАРИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПРИЧІЛ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БИТКІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ДЕЛЯТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛАНЧИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+НАДВІРНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БУКАЧІВЦІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КАМ'ЯНКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГРИГОРІВСЬКА+СЛОБОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛІСОВА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+РОГАТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТЕФАНІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПИЛИПІВЦІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+МЕЖИГАЇ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БРОШНІВ-ОСАДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КУЗЬМИНЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПЕРЕГІНСЬКЕ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+РОЖНЯТІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БАБСЬКЕ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПОГАР+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТУРІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЧЕРЕПИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЗАБОЛОТІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СНЯТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЄЗУПІЛЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛИСЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТИСМЕНИЦЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ОБЕРТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТЛУМАЧ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БОЛЕХІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ІВАНО-ФРАНКІВСЬК+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КАЛУШ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КОЛОМИЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВОРОХТА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯРЕМЧЕ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БОГОРОДЧАНИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БОЙКИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СОЛОТВИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВЕРХОВИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТОВПНІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БУРШТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГАЛИЧ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГОРОДЕНКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯКУБІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЧЕРНЕЛИЦЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ДОЛИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВОЙНИЛІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГВІЗДЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛИПНИКИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ОТИНІЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПЕЧЕНІЖИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТУДЛІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КОСІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КУТИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯБЛУНІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЗГАРИ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПРИЧІЛ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БИТКІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ДЕЛЯТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛАНЧИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+НАДВІРНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БУКАЧІВЦІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КАМ'ЯНКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ГРИГОРІВСЬКА+СЛОБОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВИГОДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛІСОВА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+РОГАТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СТЕФАНІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПИЛИПІВЦІ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+МЕЖИГАЇ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БРОШНІВ-ОСАДА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КУЗЬМИНЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПЕРЕГІНСЬКЕ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+РОЖНЯТІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БАБСЬКЕ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ПОГАР+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТУРІВКА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЧЕРЕПИНА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЗАБОЛОТІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+СНЯТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЄЗУПІЛЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЛИСЕЦЬ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТИСМЕНИЦЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ОБЕРТИН+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ТЛУМАЧ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+БОЛЕХІВ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ІВАНО-ФРАНКІВСЬК+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КАЛУШ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+КОЛОМИЯ+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ВОРОХТА+івано-франківська+область+&format=jsonv2 https://nominatim.openstreetmap.org/search.php?q=+ЯРЕМЧЕ+івано-франківська+область+&format=jsonv2
city_names.head()
| name | price | lat | lon | |
|---|---|---|---|---|
| 1 | БОГОРОДЧАНИ | 45.63 | 48.807282 | 24.536780 |
| 19 | БОЙКИ | 24.38 | 49.308701 | 24.782070 |
| 34 | СОЛОТВИН | 30.52 | 48.705493 | 24.423565 |
| 48 | ВЕРХОВИНА | 46.92 | 48.153810 | 24.827930 |
| 76 | СТОВПНІ | 15.32 | 48.002545 | 24.825778 |
place = "Івано-Франківська область"
lat, lon = get_lat_lon(place)
df = get_region_geodata(place)
df.geometry = df.geometry.apply(lambda p: p[0].boundary)
background = alt.Chart(df).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = alt.value('gray'),
opacity = alt.value(0.3),
)
regions_background = alt.Chart(gdf_regions).transform_lookup(
lookup = 'raion_name',
from_ = alt.LookupData(data = pd.DataFrame(df_test.groupby(['raion_name'])['price'].mean()).reset_index(level=['raion_name']),
key = 'raion_name',
fields=['price', 'raion_name'])
).mark_geoshape(stroke = 'white', strokeWidth = 2).encode(
color = alt.value('gray'),
opacity = alt.value(0.3),
tooltip = [
alt.Tooltip('raion_name:N')
],
)
points = alt.Chart(city_names).mark_circle().encode(
longitude='lon:Q',
latitude='lat:Q',
size=alt.Size('price:Q', legend=alt.Legend(orient='left', title='Середня Ціна')),
color=alt.value('steelblue'),
tooltip=['name:N','price:Q']
)
https://nominatim.openstreetmap.org/search.php?q=+Івано-Франківська+область+&format=jsonv2
https://nominatim.openstreetmap.org/search.php?q=+Івано-Франківська+область+&format=jsonv2
[{'place_id': 281759063, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 72488, 'boundingbox': ['47.7243356', '49.5477701', '23.5470764', '25.6531196'], 'lat': '48.7481718', 'lon': '24.5207477', 'display_name': 'Івано-Франківська область, Україна', 'place_rank': 8, 'category': 'boundary', 'type': 'administrative', 'importance': 0.8982648336744858, 'icon': 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png'}]
http://polygons.openstreetmap.fr/get_geojson.py?id=72488¶ms=0
(background + regions_background + points).project(
type='mercator', scale=12000, center=[lon, lat]
).configure_view(
strokeWidth=0).configure_title(
fontSize=26,
font='Courier',
anchor='middle',
color='gray'
).configure_legend(
orient='bottom',
direction='vertical',
labelLimit=1500,
titleFontSize=16,
titleFont='Courier',
labelFontSize=20,
titleColor='grey',
labelColor='grey',
symbolSize=100
).properties(width = 550, height = 720, background = '#F9F9F9', padding = 25, title="Розподіл Цін на Землю по Містах Області")
def actuality(year):
if year <= 2010:
return 0
elif year <= 2016:
return 1
else:
return 2
df_years = pd.DataFrame(df_test.groupby(['year'])['year'].count())
df_years.columns = ['count']
df_years = df_years.reset_index(level=['year'])
df_years['year'] = pd.to_numeric(df_years['year'], downcast="integer")
df_years['actuality'] = df_years.year.apply(lambda p: actuality(p))
df_years.head()
| year | count | actuality | |
|---|---|---|---|
| 0 | 2000 | 4 | 0 |
| 1 | 2001 | 1 | 0 |
| 2 | 2002 | 3 | 0 |
| 3 | 2003 | 2 | 0 |
| 4 | 2004 | 1 | 0 |
alt.Chart(df_years).mark_bar().encode(
x='year:O',
y="count:Q",
color= alt.Color('actuality:N', scale=alt.Scale(scheme='redyellowgreen'), legend=alt.Legend( title='Актуальність'))
).configure_view(
strokeWidth=0).configure_title(
fontSize=26,
font='Courier',
anchor='middle',
color='gray'
).configure_legend(
orient='right',
direction='vertical',
labelLimit=1500,
titleFontSize=16,
titleFont='Courier',
labelFontSize=20,
titleColor='grey',
labelColor='grey',
symbolSize=100
).properties(width = 700, background = '#F9F9F9', padding = 25, title="Розподіл Кількості Населених Пунктів з Проведенням Оцінки Землі по Роках")